package com.erp.erp_dao.Drawback;

import com.erp.erp_entitys.Drawback.entity.DrawbackEntity;
import com.erp.erp_entitys.Drawback.req.AddDrawbackReq;
import com.erp.erp_entitys.Drawback.req.QueryDrawbackReq;
import com.erp.erp_entitys.Drawback.vo.QueryDrawbackDetailVO;
import com.erp.erp_entitys.Drawback.vo.QueryDrawbackVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

/**
 * @author zjk
 * @version 1.0
 * @description
 * @date 2021/1/12/012 1:33
 */
public interface DrawbackDao {

    /**
     * 报关表每新增一条记录，就要在退税表中添加一条记录
     * 根据报关表id，将报关表中已批箱和完成箱数据的数据添加到退税表中。
     * 如果该id对应的记录状态不是已批箱或者完成箱，则不能添加
     * @param declareId
     * @return
     */
    Integer insertBillDeclareInfoToDrawback(Integer declareId);

    /**
     * 根据报关表id修改退税表
     * 报关表每修改一条记录，就要在退税表中修改一条记录
     * 只修改：报关数据的状态，理论退税金，报关金额(报关详情表里标贯小计的统计)
     * @param declareId
     * @return
     */
    Integer updateDrawbackByBillDeclareInfoId(Integer declareId);
    /**
     * 根据报关表id删除退税表
     * 报关表每删除一条记录，就要在退税表中删除一条记录
     * @param declareId
     * @return
     */
    Integer deleteDrawbackByBillDeclareInfoId(Integer declareId);

    /**
     * 根据条件实体查询报关主表以及退税表，返回退税信息集合
     * @param req
     * @return
     */
    List<QueryDrawbackVO> selectDrawbackByParam(QueryDrawbackReq req);
    /**
     * 根据登记id获取需要退税的报关信息
     * @param drawbackId
     * @return
     */
    QueryDrawbackDetailVO selectDrawbackDetailByDrawbackId(Integer drawbackId);

    /**
     * 更新退税表，添加退税信息
     * @param req
     * @return
     */
    Integer updateDrawback(AddDrawbackReq req);

    /**
     * 修改退税状态
     * @param drawbackId
     * @param drawbackStatus
     * @return
     */
    Integer updateDrawbackStatus(@Param("drawbackId") Integer drawbackId,@Param("drawbackStatus") Integer drawbackStatus);

    /**
     * 修改颜色
     * @param drawbackId
     * @param color
     * @return
     */
    Integer updateMarkColor(@Param("drawbackId") Integer drawbackId,@Param("color") String color);

    /**
     * 根据报关ID查询退税信息
     * @param declareId
     * @return
     */
    DrawbackEntity selectByDeclareId(Integer declareId);

}
